package gestion;

import java.util.ArrayList;
import java.util.Iterator;

import javax.swing.JOptionPane;

import dao.DaoAlquilerBicicleta;
import dao.DaoBicicleta;
import dao.DaoMaterialDeportivo;
import dominio.Alquilerbicicleta;
import dominio.Bicicleta;
import dominio.Materialdeportivo;
import excepciones.DAOExcepcion;

public class Bicicletas {

	private ArrayList<Bicicleta> listaBicicletas = new ArrayList<Bicicleta>();
	private ArrayList<Alquilerbicicleta> listaAlquileres = new ArrayList<Alquilerbicicleta>();
	
	private DaoBicicleta daoBicicleta = new DaoBicicleta();
	private DaoAlquilerBicicleta daoAlquilerBicicleta = new DaoAlquilerBicicleta();
	
	public boolean comprobarBicicletaNuevaEsCorrecta(Bicicleta bicicleta) {
		if (bicicleta.getIdbicicleta() != 0
				&& bicicleta.getNumerobastidor().length() != 0
				&& bicicleta.getEstado().length() != 0)
			return true;
		else {
			JOptionPane error = new JOptionPane();
			error.showMessageDialog(null, "Faltan campos por rellenar", "Error", JOptionPane.ERROR_MESSAGE);
			return false;
		}
	}
	
	public boolean anadirBicicleta(Bicicleta bicicleta) throws DAOExcepcion {
		// TODO Auto-generated method stub
		daoBicicleta.anadirBicicleta(bicicleta);
		return true;
	}
	
	public boolean actualizarBicicleta(Bicicleta bicicleta) throws DAOExcepcion {
		// TODO Auto-generated method stub
		daoBicicleta.actualizarBicicleta(bicicleta);
		return true;
	}

	//Comprobar si la bici existe existe
	public boolean comprobarBicicleta(int id) throws DAOExcepcion {
		listaBicicletas = daoBicicleta.recuperarBicicleta(id);
		if (listaBicicletas.size() != 0) {
			return true;
		}		
		return false;
	}
	
	//Recuperar una bici 
	public Bicicleta recuperarBicicleta(int id) throws DAOExcepcion {
		listaBicicletas = daoBicicleta.recuperarBicicleta(id);
		Bicicleta bicicleta = new Bicicleta();
		Iterator it = listaBicicletas.iterator();
		while (it.hasNext()) {
			bicicleta = (Bicicleta) it.next();
		}		
		return bicicleta;
	}
	
	public ArrayList recuperarBicicletas() throws DAOExcepcion {
		listaBicicletas = daoBicicleta.ListarBicicletas();
		return listaBicicletas;
	}
	
	public ArrayList recuperarBicicletasDisponibles() throws DAOExcepcion {
		Alquilerbicicleta alquiler = new Alquilerbicicleta();
		
		listaBicicletas = daoBicicleta.ListarBicicletas();
		listaAlquileres = daoAlquilerBicicleta.ListarAlquileresBicicleta();
		
		Iterator it = listaAlquileres.iterator();
		while (it.hasNext()) {
			alquiler = (Alquilerbicicleta) it.next();			
			if(alquiler.getFechadevolucion()!=null){
				listaBicicletas.remove(alquiler.getBicicleta());
			}
		}		
		
		return listaBicicletas;
	}
}
